package 学生管理系统;


import java.io.*;
import java.util.ArrayList;

public class Utils {
    private Utils() {
    }

    public static int stuId;

    //在程序加载时,动态读取文件中id来给Utils工具类中的id赋值,而这个过程每次只需要执行一次,故用静态代码块
    static {
        BufferedReader br = null;
        try {
            File file = new File("易错题/ids.txt");
            if (!file.exists()) {
                file.createNewFile();
            }
            br = new BufferedReader(new FileReader(file));
            String id = br.readLine();
            if (id != null) {
                Utils.stuId = Integer.parseInt(id);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    //将集合中最后一个id保存到文件中,这个id是动态获取的,一旦发生变化,要同步到文件中
    public static void storId2File(String path) throws IOException {
        BufferedWriter bw = new BufferedWriter(new FileWriter(path));
        //把id写入文件中
        bw.write(stuId + "");
        bw.newLine();
        //释放资源
        bw.close();
    }


    //把学生集合中的数据保存到指定文件中
    public static void store2file(ArrayList<Student> stuList, String path) throws IOException {
        //缓冲字符流关联文件路径
        BufferedWriter bw = new BufferedWriter(new FileWriter(path));
        //遍历集合,获取每一个数据
        for (Student student : stuList) {
            bw.write(student.show());
            //写一个换一行
            bw.newLine();
        }
        //释放资源
        bw.close();
    }

    //将指定文件中的数据读到集合中
    public static void load2List(ArrayList<Student> stuList, String path) throws IOException {
        //缓冲字符流关联文件路径
        BufferedReader br = new BufferedReader(new FileReader(path));
        //一次读一行,不断读取
        String line;
        while ((line = br.readLine()) != null) {
            //用","切开line,存储到字符串数组中
            String[] strArr = line.split("\t\t");
            if (strArr != null && !"".equals(strArr) && strArr.length > 0) {

                Student student = new Student(Integer.parseInt(strArr[0]), strArr[1], Integer.parseInt(strArr[2]), strArr[3]);
                stuList.add(student);
            }
            //把数组中的数据封装成学生对象
            //把封装好的学生对象添加到集合中
        }
        //释放资源
        br.close();
    }

    //打印学生集合信息
    public static void printList(ArrayList<Student> stuList) {
        System.out.println("**********************************");
        //先打印表头
        System.out.println("学号\t\t姓名\t\t年龄\t\t性别\t\t工作");
        //打印学生集合信息
        for (Student student : stuList) {
            System.out.println(student.show());
        }
        System.out.println("**********************************");
    }
}
